Button其中有一個特別的元件Dialog,放置在button點擊事件內,點擊button後會在畫面中產生一塊對話框,種類非常多,我想在這特別介紹日曆跟時鐘。
其中Calendar是製作日曆時鐘非常重要好用的一個套件,負責抓當前的日期跟時間
使用calender 抓到日曆上的年/月/日
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
之後用DataPickerDialog 建立一個監聽器,時刻查看當點擊畫面上的圖示,將圖示轉化成字串傳給欲顯示的Textview上做顯示。
完整程式
date_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 取得當前的日期
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
// 創建日期選擇對話框
DatePickerDialog datePickerDialog = new DatePickerDialog(
view.getContext(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
// 當日期選擇後,這裡可以處理選擇的日期
// 比如顯示在TextView或者儲存到變量中
String selectedDate = year + "/" + (month + 1) + "/" + day;
// 假設有個TextView顯示選中的日期
show_date.setText(selectedDate);
}
}, year, month, day);
// 顯示日期選擇對話框
datePickerDialog.show();
}
});
時鐘的做法其實跟日曆非常相似,一樣是用calendar抓取當前的小時、分鐘,image
但使用的是TimePickerDialog,並將參數導入元件上做顯示
完整程式碼如下
public class MainActivity extends AppCompatActivity {
private Button button;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
button=findViewById(R.id.button);
textView=findViewById(R.id.textView);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar calendar= Calendar.getInstance();
int hour=calendar.get(Calendar.HOUR_OF_DAY);
int min=calendar.get(Calendar.MINUTE);
TimePickerDialog timePickerDialog = new TimePickerDialog(view.getContext(),
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hour, int min) {
String time=hour+":"+min;
textView.setText(time);
}
},hour,min,true );
timePickerDialog.show();
}
});
}
}